// 递归处理数据格式
export function formatData(data, config = {}) {
  const format = [];
  const level = config && config.level || 0;
  const childrenKey = config && config.childrenKey || 'children';
  if (data && data.length) {
    data.forEach(v => {
      // 没有子项不默认赋值[]
      const children = v[childrenKey] && v[childrenKey].length && formatData(v[childrenKey], { ...config, level: level + 1 });
      format.push({
        ...v,
        value: v[config.value || 'id'],
        label: v[config.label || 'name'],
        disabled: v[config.disabled || 'status'] === 0,
        level: level,
        children
      })
    })
  }
  return format
}

/**
   *定义一个方法，传入json，转换成form-data格式
   * @param {object} params json结构
   * @returns {FormData}
   * 使用方法
   *
  const obj = {
    name: "tom",
    age: "18",
    sex: "male",
    photo: fileList
  };
  var form = formdataify(obj)// 此时的form就是最后的form-data数据
   */
export const formdataify = (params) => {
  const formData = new FormData();
  Object.keys(params).forEach((key) => {
    if (typeof params[key] === "string") {
      // 如果是普通json，直接append
      formData.append(key, params[key]);
    } else {
      // 存在部分参数异常--》null、undefined
      if (params[key] === undefined || params[key] === null) return
      if (
        params[key] instanceof File
      ) {
        // 文件类型
        formData.append(key, params[key])
        // params[key].forEach((item) => {
        //   formData.append(key, item.raw);
        // });
      } else {
        // 引用类型
        formData.append(key, JSON.stringify(params[key]));
      }
    }
  });
  return formData;
};
